Introduction

Every day, more than 120 people in America are killed with guns.1 The gun homicide rate in the U.S. is 26 times higher than that of other high-income countries.2 In 2024, the US Surgeon General’s Advisory declared gun violence as a public health crisis.3

Charlottesville and Albemarle are not immune to this epidemic of gun violence. The rate of violent crime in our community increased by 30% from 2021 to 2022, and in the early months of 2023, police had already investigated five homicide cases compared to zero cases in 2021.4 On November 13, 2022, three UVA football players were shot and killed on campus. Devin Chandler, Lavel Davis Jr. and D’Sean Perry lost their lives to an act of gun violence. While incidents of gun violence have decreased in the first half of 2024,5 the number of bullets recovered at each scene has increased, pointing to the ever-changing nature of the issue.

The Gun Violence Solutions Project is a University-sponsored effort to work with community partners on assessing, developing, and implementing actionable solutions to reduce gun violence in mid-sized cities and regions, like Charlottesville and Albemarle. One strand of the Gun Violence Solutions Project is focused on researching solutions that could be implemented locally, while exploring law and policy alongside the historical, cultural, and structural factors that shape gun violence.

This document is meant to support the regional work of the Gun Violence Solutions Project to help our community understand the larger picture of gun violence and gun violence trauma in our region by bringing together multiple sources of data. The residents of Charlottesville and Albemarle are the central stakeholders. The folks who live and work here are the data. Given the wealth of lived experience and the range of perspectives within our community, these voices must be centered. Each section includes an overview of the data source presented, a brief discussion of notable trends, and limitations that may complicate or constrain conclusions. Together we can develop a shared understanding and greater clarity about the local problem of gun violence, identify knowledge and data gaps, and facilitate wider community engagement in conversations about solutions.

Ultimately, we hope this work will be part of:

  1. Understanding the full impact of gun violence on our community and how different people experience this impact;

  2. Working with residents, advocates, and decision-makers to identify approaches to prevention and intervention for all types of gun violence; and

  3. Evaluating the effectiveness of current and future efforts to eliminate gun violence.

Data Notes

The data provided below represent information that is, for the most part, publicly available. This document is meant to serve as an overview of the existing resources so that we can begin representing the nature, scope, and dimensions of the problem locally.

Much of this data relies on information created when people interact with representatives of public services. While reduced to counts and numbers, the experiences and processes the data represent are deeply human. People’s decisions select, record, and shape the data. Though no personally identifiable information is contained in this report, each data point represents a moment in the lives of members of our community.

The code and (most of the) data are available at our GitHub repository. We encourage anyone interested to review these analyses or extend them by contributing their own data-driven insights.

Because the data below is drawn from various sources – news outlets, the Virginia Department of Health, and local and national law enforcement agencies – we provide a glossary to clarify terminology.

Please refer to the Terminology section of the Appendix for more information and a list of definitions.


Firearm Injuries & Deaths

The leading cause of death by gun violence in the Blue Ridge Health District is suicide, which made up 76% of all firearm-related deaths from 2018 to 2022. The Blue Ridge Health District includes Charlottesville City, and the counties of Albemarle, Greene, Louisa, Fluvanna, and Nelson. The chart below includes the number and rate of firearm-related deaths among Blue Ridge Health District residents. Homicide – community violence, domestic violence, mass shootings, and other intentional violence – accounts for 22% of all deaths.

Source: https://data.virginia.gov/dataset/vdh-pud-firearm-deaths-by-district-intent


Injuries in Cville/Albemarle

The Virginia Department of Health also reports data on emergency department visits for firearm injuries. The table below shows the rate of firearm injuries per 10,000 emergency department visits in Charlottesville and Albemarle from 2015 - 2023. This aggregation does not include any demographic information.

vdh_injuries <- read_csv("data/vdh_injuries.csv") 

albemarle <- vdh_injuries %>%
  filter(str_detect(patient_city_county, "Albemarle"))
  
albemarle %>%
  arrange(year) %>%
  select(-patient_city_county) %>%
  reactable(
    defaultColDef = colDef(
      header = function(value)
        str_to_title(gsub("_", " ", value, fixed = TRUE)),
      align = "center",
      defaultSortOrder = "desc",
      headerStyle = list(background = "#f7f7f8")
    ),
    columns = list(
      total_ed_visits = colDef(format = colFormat(separators = TRUE)),
      rate_of_firearm_injuries_per_10k_ed_visits = colDef(style = color_scales(
        albemarle, colors = c("#FFFFFF", "#FA8C00")
      ))
    ),
    bordered = TRUE,
    highlight = TRUE
  ) %>%
    add_legend(albemarle, col_name = 'rate_of_firearm_injuries_per_10k_ed_visits', title = 'Rate of Firearm Injuries per 10k ED Visits', footer = 'Reported as of 2023', colors = c("#FFFFFF", "#FA8C00"))
Rate of Firearm Injuries per 10k ED Visits
  • 8.3
  • 6.4
  • 5.4
  • 4.4
  • 3.9
Reported as of 2023

Notable Trends

In 2020, the rate of firearm injuries peaked at 8.3, with 29 firearm injuries among 34,875 emergency department visits. However, 2020 also had the lowest number of emergency department visits which aligns with national trends of decreased emergency department use during the COVID-19 pandemic.6 After falling in 2021, the firearm injury rate began trending upward.

Data Notes

City/county localities are assigned using the patient’s residential zip code for Virginia residents. Patients with non-Virginia or unknown zip codes are grouped as ‘Out of State.’

Firearm injury visits are identified using key terms in the chief complaint (reason for visit) and discharge diagnosis codes. Key terms include: gun with wound, GSW, gunshot, buckshot, revolver, rifle, shotgun, firearm, pistol, handgun, been shot, I was shot, I got shot, combination of hit, ricochet, graze with bullet. ICD-10 diagnosis codes: W32.0, W32.1, W33.0, W33.1, W34.0, W34.1, X72, X73, X74, X93, X94, X95, Y22, Y23, Y24, Y35.0, Y38.4 SNOMED diagnosis codes: 41430008, 56768003, 63409001, 69861004, 77301004, 86122002, 111050005, 219257002, 283545005, 218081007, 218086002, 218082000, 218087006, 218088001, 269796009, 242869008, 219199009, 219200007, 219201006, 219204003, 219205002, 219203009, 219198001, 219142001, 219143006, 219144000, 219145004, 219146003, 287184008, 287193009.

This excludes follow-up visits, visits involving other types of guns (e.g., staple gun), and visits where firearm was used as a weapon but not fired (e.g., pistol whip).


Deaths in the Blue Ridge

The VDH Office of Vital Records tracks causes of death among Virginia residents using death certificates. Codes on the death certificate indicate underlying and contributing causes of death.

vdh_age <- read_csv("data/vdh_age.csv")

vdh_age %>%
  select(-health_district) %>%
  arrange(age_group) %>%
  reactable(
    defaultColDef = colDef(
      header = function(value) str_to_title(gsub("_", " ", value, fixed = TRUE)),
      align = "center",
      defaultSortOrder = "desc",
      headerStyle = list(background = "#f7f7f8")),
    columns = list(
      rate_of_firearm_deaths_per_100k_pop = colDef(style = color_scales(vdh_age, colors = c("#FFFFFF", "#FA8C00"))
        )),
    bordered = TRUE,
    highlight = TRUE,
    defaultPageSize = 11) %>%
    add_legend(vdh_age, col_name = 'rate_of_firearm_deaths_per_100k_pop', title = 'Rate of Firearm Deaths per 100k Pop', footer = 'Years: 2018 - 2022', colors = c("#FFFFFF", "#FA8C00"))
Rate of Firearm Deaths per 100k Pop
  • 18.3
  • 14.8
  • 13.1
  • 7.3
  • 0.7
Years: 2018 - 2022

Notable Trends

The table above shows that the rate of firearm death is highest for individuals aged 18 and 19 years old, with a rate of 18.3 based on 8 confirmed firearm-related deaths between 2018 and 2022 in the Blue Ridge Health District. A rate of 18.3 means that for every 100,000 people aged 18-19, 18 individuals would have lost their lives to gun violence. While there are fewer than 100,000 residents aged 18-19, the rate helps compare risk of gun-related deaths across age ranges. The rate above 14 per 100k individuals for all ages between 18 and 44 years old. The age group with the second-highest percentage of gun-related deaths are individuals above the age of 75, with 16 deaths per 100,000 people. Given that suicide is the number one cause of firearm-related death in our region, we assume that a majority of the deaths for individuals 75 and older were suicide.

Data Notes

Deaths are classified as firearm-related using the definition from the Centers for Disease Control.7

VDH reports the number and rate of firearm-related deaths among Virginia residents by patient health district and age from 2018 through 2022. Virginia Department of Health districts are assigned based on the residence of the patient at the time of death, not where the death occurred. Data includes Virginia residents only, regardless of whether they died in Virginia.


Incidents of Gun Violence

Sourced from the Gun Violence Archive, this data includes information collected from public news sources about 201 of gun violence affecting 306 participants in the Charlottesville/Albemarle region from May 2014 - April 2024. An individual may be involved in more than one incident (see incidents vs. crimes). Incidents range from shots fired reports, to unlawful gun ownership, to acts of violence such as assault and homicide. This data does not include information about suicides.

The data is made up of two dataframes: one has information about each incident and the associated outcomes (for example, the number of people injured and/or killed), and the other lists the participant-level information (for example, the age range and gender of the participants for both victims and suspects). The data includes the location and date of each incident along with characteristics such as numbers of injuries, homicides, or shots fired.

Incident-level data

gva_incidents <- read_csv("data/gva_incidents.csv") 

gva_incidents %>%
  group_by(yr = year(incident_date)) %>%
  summarise(total_injured = sum(victims_injured + suspects_injured),
            total_killed = sum(victims_killed + suspects_killed)) %>%
  ungroup() %>%
  pivot_longer(matches("total")) %>% 
  ggplot(aes(x = yr, y = value, fill = name)) +
  geom_col() +
  labs(title = "Victims of Gun Violence in the Charlottesville/Albemarle Region",
       x = "Year",
       y = "Number of Victims",
       caption = "Total incidents: 201") +
  scale_fill_manual(labels = c("Injured", "Killed"),
                    values = c("#F8BE3D", "#007BAB"),
                    guide = guide_legend(title = "Victim Status")) +
  scale_x_continuous(breaks = scales::pretty_breaks(n = 11),
                     guide = guide_axis(angle = 35))

Notable Trends

The bar graph above shows that the number of victims both injured and killed in incidents of gun violence have increased tenfold from 3 in 2014 to 33 in 2022. 2022 had the highest number of victims injured, with 24 individuals reported being shot, while 2023 was the deadliest year, with 12 individuals losing their lives to gun violence. While 2024 only includes data through April, so far the numbers are trending lower than in previous years.

Data Notes

The data does not include any identifiable information about the participants, like name, race, ethnicity, socioeconomic status, or mental health status.

Voluntary Participation

Because the data is sourced from public news websites, if an act of violence didn’t receive local news attention it was not included in the Gun Violence Archive database. That means this data underrepresents some information, especially shots fired numbers. Notably, it looks like shots fired incidents haven’t been added to the database since 2021.

Suicides

Suicides are not part of the Gun Violence Archive’s normal data collection procedures. Individual suicides are collected through the CDC’s Annual Report8 and, because of privacy and CDC policy, they are only available as an aggregate number, without detail. Suicides associated with Officer-Involved incidents and Murder-Suicides are included in Gun Violence Archive tallies because they are considered incidents of community violence.


Individual-level data

gva_participants <- read_csv("data/gva_participants.csv") 

gva_participants %>%
  drop_na(age) %>%
  mutate(yr = year(incident_date),
         role = str_to_title(role)) %>%
  ggplot(aes(age, fill = role)) +
  geom_histogram(position = 'identity') +
  facet_grid(~role) +
  scale_fill_manual(labels = c("Suspect", "Victim"),
                    values = c("#F8BE3D", "#007BAB"),
                    guide = guide_legend(title = "Participant Role")) +
  labs(title = "Ages of Participants",
       x = "Age",
       y = "Number of People", 
       caption = "Total particpants: 306") +
  scale_x_continuous(breaks = scales::pretty_breaks(n = 10),
                     guide = guide_axis(angle = 35))

Notable Trends

The bar graphs above show the age ranges of suspects and victims of gun violence in Charlottesville and Albemarle from May 2014 to April 2024. The age of suspects peaks between the ages of 18 and 23; the age of victims peaks around the ages of 19-22 and again around ages 33-33.

Data Notes

The data does not include any identifiable information about the participants, like name, race, ethnicity, socioeconomic status, or mental health status.

Voluntary Participation

Because the data is sourced from public news websites, if an act of violence didn’t receive local news attention it was not included in the Gun Violence Archive database. That means this data underrepresents some information, especially shots fired numbers. Notably, it looks like shots fired incidents haven’t been added to the database since 2021.

Suicides

Suicides are not part of the Gun Violence Archive’s normal data collection procedures. Individual suicides are collected through the CDC’s Annual Report9 and, because of privacy and CDC policy, they are only available as an aggregate number, without detail. Suicides associated with Officer-Involved incidents and Murder-Suicides are included in Gun Violence Archive tallies because they are considered incidents of community violence.


Crimes Involving Firearms

Crime data for Virginia are pulled from the National Incident-Based Reporting System (NIBRS) database. Managed by the FBI, this database requires all law enforcement agencies to submit their crime data annually in a uniform and structured manner. The data contains summaries of all crimes where a firearm was used in Virginia, Albemarle County, and Charlottesville City between 2016 - 2023, separated by whether the individuals believed to have committed the crime was an adult or a youth. For this source, youth are considered to be under the age of 18.

nibrs_crime <- read_csv("data/nibrs_crime.csv")
age_labs <- c("Under 18", "Above 18")
names(age_labs) <- c("n_juvenile", "n_adult")

nibrs_crime %>%
  mutate_at(vars(matches('n_')), ~ . / est_pop_district * 1e4 ) %>%
  pivot_longer(cols = c(n_juvenile, n_adult)) -> tmp_plt_dat

ggplot(tmp_plt_dat, aes(year, value, color = district, group = district)) +
  geom_line(size = 1.5) +
  facet_wrap(~name,
             labeller = labeller(name = age_labs),
             scales = "free_y") +
  labs(x = "Year",
       y = "Crime Rate per 100k Population",
       title = "Adult Compared to Youth Firearm Crime Rates") +
  scale_color_manual(values = c("#232D4B", "#F8BE3D", "#007BAB"), 
                    name = "Region",
                    breaks = c("virginia", "charlottesville", "albemarle"),
                    labels= c("Virginia", "Charlottesville", "Albemarle")) +
    geom_label(data = filter(tmp_plt_dat, year == 2023),
             aes(label = paste0(round(value, 1))),
             show.legend = F, hjust = .75, alpha = 0.75, fontface = "bold") +
  scale_x_continuous(breaks = scales::pretty_breaks(n = 8),
                     guide = guide_axis(angle = 35))

Notable Trends

The figure above shows the rate of gun violence crimes per 100k population over time. In Virginia, the crime rate has been generally increasing from 19.2 in 2016 to 24.4 in 2023, with a peak of 25.6 in 2022. That means on average in Virginia in 2023, for every 100,000 people, there were 24 crimes involving firearms. The rate in Charlottesville has been much more variable, peaking above state levels from 2020 to 2022 and reaching a maximum of 28 in 2021. Albemarle has had a relatively steady rate during this period, ranging from a minimum of 7.4 in 2021 to a maximum of 11 in 2022. In general, following the COVID-19 pandemic, crimes involving firearms increased for all age groups however most notably among youth under 18. The Charlottesville youth firearm crime rate surpassed state levels in 2022, however that number has been slowly decreasing.

Data Notes

Participation

The Virginia NIBRS is managed by the Virginia State Police Data Analysis and Reporting Team. In 2021, the NIBRS underwent a massive national structural change which affected every agency. Although participation is mandatory, there is the potential for some data loss as each law enforcement agency finalizes their data submission process and data is updated. The 2023 data may not have all participating agencies, and therefore may not be complete.


Police Reporting

This dataset includes an anonymized collection of 890 gun-related incidents recorded by the Charlottesville Police Department (CPD), the Albemarle County Police Department (ACPD), and the UVA Police Department (UPD) between January 1, 2019 - May 18, 2024. The data was retrieved from their SQL database by the ACPD Sr. Crime Analyst, de-identified, and then shared with the Equity Center in June 2024. To preserve anonymity while also providing geographic information, approximate block numbers are used instead of specific addresses. This data is used further below to compare incidents of gun violence to underlying population characteristics.

Each observation represents the initial information that is provided by individuals calling for police assistance. Some incidents are listed as “Unverified” which means that although a call was made to the police, there was not sufficient evidence to confirm an incident of gun violence actually occurred (see Data Notes section below.)

As a result, this is not a definitive collection of public safety data for Charlottesville and Albemarle. These reports likely miss some acts of gun violence as not all incidents are reported to the police. Both personal and structural histories impact individuals’ likelihood of calling the police. In addition, while verified reports indicate evidence of shots fired, they do not mean that an arrest was made.

regional_gv <- read_csv("data/regional_gv.csv") %>%
  mutate(locality = word(locality, 1),
         yr = year(reported_date))

shots_fired <- regional_gv %>%
  filter(description == "Shots Fired",
         verified == "VERIFIED") %>%
  group_by(yr, locality) %>%
  count() %>%
  rename(shots_fired = n)

other <- regional_gv %>%
  filter(description != "Shots Fired",
         verified != "UNVERIFIED") %>%
  group_by(yr, locality) %>%
  count() %>%
  rename(other = n)

years <- shots_fired %>%
  left_join(other, relationship = "many-to-many") %>%
  pivot_longer(cols = c("shots_fired", "other"),
               names_to = c("type"),
               values_to = "count")
  
ggplot(years, aes(yr, count, fill = type)) +
  geom_col() +
  facet_wrap(~locality) +
  scale_fill_manual("Incident Type",
                    labels = c("Aggravated Assault & Homicide", "Shots Fired"),
                    values = c("#F8BE3D", "#007BAB")) +
  labs(title = "Incidents of Gun Violence in Charlottesville & Albemarle",
       x = "Year",
       y = "Number of Verified Incidents",
       caption = "Note: the 2024 data only includes incidents up to May 18.") +
  scale_x_continuous(breaks = scales::pretty_breaks(n = 7),
                     guide = guide_axis(angle = 35))

Notable Trends

The stacked bar plots above show the types of firearm-related incidents in Charlottesville and Albemarle between 2019 and early 2024. While the number of shots-fired reports is higher in Albemarle County, the number of violent incidents such as aggravated assault and homicide is higher in Charlottesville. The distinct geographies contained in each locality likely accounts for some of this difference. For example, shots fired in a rural area of Albemarle County may be a result of wildlife hunting season, while shots fired in an urban area of Charlottesville is typically not associated with legal wildlife hunting.

Data Notes

Verification

Each incident is listed as being verified, unverified, or as a case. An incident is considered verified if it can be proved by an officer to have happened or there is reasonable evidence of its occurrence. For example, a shots fired incident would be verified if there were shell casings found at the scene.

An incident would be considered unverified if there was no proof after the fact that it happened. For example, someone may call the police to report hearing loud noises, however when the officers arrived they find either no evidence of a shooting, or evidence to prove otherwise, such as used fireworks supplies.

An incident would be marked as a case if it required significant follow up, or was otherwise recorded as a crime to be investigated. Typically more violent incidents such as aggravated assault or homicide become cases.

Data Sharing

Because this data may include information that is actively being used in court, it is the only data source in this report that is not fully open-sourced, or publicly available. This decision was made so that the individuals being represented can maintain their anonymity throughout the duration of their trial and subsequent followup. A similar, but more limited, report can be generated based on data availble in the Charlottesville Open Data Portal, and instructions on how to do so are outlined in scripts.R.


Charlottesville Open Data Portal

Another way of exploring local gun violence data is through the publicly available Charlottesville Open Data Portal. This database includes 526 gun-related crime reports, and 390 gun-related arrests in City of Charlottesville from March 2019 through April 2024.

This data differs from the above data, shared directly by the police, in the following ways:

  1. It includes only reports in the Charlottesville district;
  2. It includes all calls to police, not just gun-related calls;
  3. It does not include additional incident information such as verification or if it was assigned to a detective as a case.

The dataset is made up of two dataframes. The first includes information about initial crime report. This data represent the first step when gun-related crimes are recorded; the police-provided data represents the observations after subsequent steps – officer investigation – have occurred. The second data set includes arrest data. Both datasets have been anonymized to remove names and other identifiable information such as house numbers.

odp_crimes <- read_csv("data/odp_crimes.csv") 
odp_arrests <- read_csv("data/odp_arrests.csv")

cville_map <- get_map(c(left = -78.53, bottom = 38.00, right = -78.45, top = 38.07), 
                      maptype = "roadmap", color = "bw")

# Geographic spread
ggmap(cville_map) +
  stat_density2d(data = odp_crimes, aes(fill = ..level.., alpha = 0.1), # removes 55 values
                 geom = "polygon") +
  theme(legend.position="none") +
  scale_fill_viridis_c(direction = -1) +
  theme_void() +
  theme(legend.position = "none") +
  labs(title = "Gun-Related Crime Reports",
       caption = "Total reports: 526")

ggmap(cville_map) +
  stat_density2d(data = odp_arrests, aes(fill = ..level.., alpha = 0.1), # removes 96 values
                 geom = "polygon") +
  theme(legend.position="none") +
  scale_fill_viridis_c(direction = -1) +
  theme_void() +
  theme(legend.position = "none") +
  labs(title = "Gun-Related Arrests",
       caption = "Total arrests: 390")

Notable Trends

The two maps above show the density of gun-related crime reports and arrests in the Charlottesville region. The map on the left demonstrates that most gun-related crime reports between March 2019 and April 2024 were concentrated in the West Main Street area, specifically near the 10th St intersection. There are also smaller concentrations of reports in Fifeville and on the east end of the Downtown Mall, near the Pavilion.

The map on the right demonstrates that most gun-related arrests are concentrated on the east end of the Downtown Mall, the Roosevelt-Brown Boulevard region, and the south side of Charlottesville. The location with the most arrests is the Charlottesville Police Station, located on the East End of the Downtown Mall. When we asked the police department for clarification, they explained that most arrest warrants are written and filed at the police station, and that when individuals receive warrants, they turn themselves in at the police station. Most incidents of gun violence do not have an arrest at the scene of the crime, but have an arrest days later from a warrant issued, which is issued at the police station.


Arrest Reports

From the Charlottesville Open Data Portal:

“Arrest data contains information on people taken into custody by City of Charlottesville police officers. More serious crimes such as felony offenses are more likely to result in an arrest. However, arrests can occur as a result of other offenses, such as parole violations or a failure to appear for trial.”

Below we use the arrest data to understand whether a lot of people are committing a few crimes or a few people are committing a lot of crimes. The figure shows the distribution individuals arrested among the 390 arrests for firearm-related charges made between May 2019 and April 2024. The data has been anonymized so that identifiable information has been removed.

# Arrest numbers per person 
odp_arrests %>%
  group_by(id) %>%
  summarise(charges = n()) %>%
  ungroup() %>%
  ggplot(aes(y = charges)) +
  geom_bar(fill = "#007BAB") +
  geom_text(aes(label =..count..), stat = "count", hjust = -0.25, size = 3) +
  labs(title = "Number of Firearm-Related Arrests per Person",
       x = "Number of People",
       y = "Number of Charges per Person",
       caption = "Total number of people arrested: 233") +
  scale_y_continuous(breaks = c(1:15)) +
  geom_label(aes(90, 10, label = "86% of people arrested \nfor gun-related crimes \nhave 2 or fewer charges"))

Notable Trends

Of the 233 individuals arrested, 147 have only one gun-related charge during this five-year period, 53 have two charges, and one person has 15 charges. In other words, 86% of people arrested for gun-related crimes have 2 or fewer charges. This suggests a small group of people are committing a significant proportion of gun-related crimes in Charlottesville.

Data Notes

Jurisdiction Limits

These datasets only contain information reported by City of Charlottesville Police. It does not contain information about incidents that solely involve other police departments operating within the city (for example, University of Virginia police or Albemarle County police).

Filtering

The data has been filtered to only include crime reports that involve firearms, which required some subjective wrangling. Specifically, only offences labeled Shots Fired/Illegal Hunting, Robbery - Armed, and Weapons Violations are used. As a result, this data may significantly underrepresent the number of firearm incidents. For example, crime reports that have Assault as the primary offense are not included because we cannot be certain the assault included firearm.


Access to Firearms

With nearly a third of Americans owning a gun10, access to firearms is easy for many people. Someone can legally purchase a gun from their local big-box store, their neighborhood gun dealer, or a specialty weapons trade show. The minimum age in Virginia to purchase a handgun is 21, however individuals as young as 18 can legally purchase rifles and shotguns11. Residents can open carry their weapons, except in areas where firearms are prohibited by statute (such as UVA Grounds12), and there are no state-mandated age limits on purchasing ammunition.

People can also obtain guns illegally: from manufacturing their own, to under-the-table sales, to trade and barters, and even theft.

This section explores two means of accessing guns in Charlottesville and Albemarle: from the many licensed dealers and from thefts, specifically thefts from vehicles.

alb_sf <- get_acs(
  geography = "county",
  state = "51",
  variables = "B01001_001",
  survey = "acs5",
  geometry = TRUE,
  year = 2022) %>%
  filter(NAME == "Albemarle County, Virginia")

Firearms Dealers

The Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) maintains a record of all federally licensed firearms dealers. Some of these dealers are widely frequented businesses, such as the Walmart on Route 29, while others are individuals that operate out of residential neighborhoods. The list and map below show the 22 authorized dealers in Charlottesville and Albemarle county as of April 2024.

Map

atf_dealers <- read_csv("data/atf_dealers.csv")

alb_map <- get_map(c(left = -79, bottom = 37, right = -78, top = 39),
                   maptype = "roadmap", color = "bw")

ggmap(alb_map) +
  geom_sf(data = alb_sf, inherit.aes = FALSE, alpha = 0, linewidth = 0.5) +
  theme_void() +
  geom_point(atf_dealers,
             mapping = aes(x = lon, y = lat, col = business_type, shape = business_type),
             size = 3) +
  scale_color_manual(name = "Business Type", values = c("#F8BE3D", "#007BAB")) +
  scale_shape_manual(name = "Business Type", values = c(17, 19)) +
  theme_void() +
  labs(title = "Locations of Firearms Dealers in Charlottesville & Albemarle",
       caption = "Total licensed dealers: 22")

Notable Trends

The map above shows that a majority of licensed firearms dealers operate out of businesses in Charlottesville, while there are a handful of residential entities that are licensed to deal firearms in Albemarle county.


Table

The type of license issued indicates if the seller is a dealer or manufacturer of firearms and/or other destructive devices like explosives. The sellers in Charlottesville and Albemarle have the following license types:

  • Type 01 - Dealer in Firearms Other Than Destructive Devices

  • Type 02 - Pawnbroker in Firearms Other Than Destructive Devices

  • Type 07 - Manufacturer of Firearms Other Than Destructive Devices

  • Type 09 - Dealer in Destructive Devices

  • Type 10 - Manufacturer of Destructive Devices, Ammunition for Destructive Devices or Armor Piercing Ammunition

atf_dealers %>%
  select(license_name, business_name, premise_street, license_type) %>%
  reactable(
    defaultColDef = colDef(
      header = function(value)
        str_to_title(gsub("_", " ", value, fixed = TRUE)),
      align = "left",
      headerStyle = list(background = "#f7f7f8")
    ),
    columns = list(
      license_type = colDef(minWidth = 50)
    ),
    bordered = TRUE,
    highlight = TRUE
  ) %>%
  reactablefmtr::add_source("List of all Federal Firearm License types: https://www.atf.gov/resource-center/fact-sheet/fact-sheet-federal-firearms-and-explosives-licenses-types", align = "right", font_size = 10, font_color = "grey")

List of all Federal Firearm License types: https://www.atf.gov/resource-center/fact-sheet/fact-sheet-federal-firearms-and-explosives-licenses-types


Theft from Vehicles

Thefts from cars are the largest source of stolen guns and have increased triplefold compared to the last decade.13

In 2023 in Virginia, $1,577,221 dollars worth of guns were reported stolen from vehicles. Specifically, in Albemarle the amount reported was $20,857, and in Charlottesville, $11,940.

The plot below shows the number of guns stolen from vehicles in Charlottesville City and Albemarle County from 2016 to 2023.

nibrs_theft <- read_csv("data/nibrs_theft.csv") %>%
  filter(district != "Virginia")

ggplot(nibrs_theft, aes(year, n_stolen, colour = district)) +
  geom_line(linewidth = 1.5) +
  labs(x = "Year",
       y = "Number of Firearms Stolen",
       title = "Theft of Firearms from Vehicles") +
  scale_color_manual(values = c("#007BAB", "#F8BE3D"), 
                    name = "Region") +
  geom_label(data = nibrs_theft, 
             aes(label = n_stolen), 
             show.legend = F, 
             alpha = 0.75,
             fontface = "bold") +
    scale_x_continuous(breaks = scales::pretty_breaks(n = 7),
                     guide = guide_axis(angle = 35))

Notable Trends

In general, the rate of firearms being stolen from vehicles has increased, with 48 guns being stolen from vehicles in 2023 in Charlottesville and Albemarle.


Residential Characteristics

The data shown above is focused on describing key outcomes. To better understand the underlying contexts of gun trauma in our community, and thus to develop responses, we compare the location of these outcomes to the composition of key residential characteristics that may influence antisocial or violent behavior.

The maps below show clusters of gun violence incidents reported by our local police jurisdictions between 2018 and 2024 overlaid on top of community population characteristics. These characteristics are sourced from the 5-year 2022 American Community Survey. The maps are meant to show the general distribution of residential characteristics in our region, such as youth populations, childhood poverty rates, median earnings, and unemployment rates.

Next to each map is a tab with a scatterplot comparing the residential characteristic to rates of gun violence within each census tract. The residential characteristic being examined is represented along the bottom and the proportion of total gun violence incidents from 2018 - 2024 is shown along the side. Each circle represents a different census tract, and the size of the circle is proportional to the population of the tract.

Youth Populations

Are incidents of gun violence happening where there are more youth populations?

With over 16,700 undergraduate students coming to the region each semester to study at UVA,14, a portion of the youth population of Charlottesville and Albemarle is transient.

The map below shows the percentages of the population that are under 18 and 25 years old, respectively, for each census tracts. It is important to note that the JPA - Fontaine, Carr’s Hill - McCormick, and Darden tracts house a large number of students, with nearly all first year students living in dorms in the McCormick region. As a result, the values for these regions are skewed. To account for the student population, we chose the ages of 18 and 25 as cutoff points so that we can better understand both populations of our region.

Map

Map Instructions: the map below shows the percentages of Under-18 and Under-25-year-olds in our region. Each grey circle represents a cluster of gun violence incidents. Click on a circle to zoom into the cluster and explore the location, date, and description of each incident. Click on a census tract to see population measurements. Zoom in to see specific areas and incidents more closely. Toggle between the Under-18 and Under-25 populations using the selector in the top right.

# Get census and police-provided gun violence data
dat <- readRDS("data/census.RDS")
gv <- read_csv("data/regional_gv.csv")

# Convert lat/lon coords to sf points
gv_pts <- gv %>%
  st_as_sf(coords = c("lon", "lat"), crs = 4326)

# Count incidents per tract
gv_sf_summary <- dat %>% 
  mutate(counts = lengths(st_intersects(., gv_pts))) %>%
  group_by(tract) %>%
  mutate(incidents_pop = (counts / pop_est),
         percent_incidents = (counts / 887) * 100,
         locality = str_to_title(locality)) 

pal_age <- colorNumeric(palette = "viridis", 
                    domain = 0:100, 
                    reverse = TRUE)

gv_sf_summary %>%
  filter(tract_name != "JPA - Fontaine") %>%
  leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>% 
  addPolygons(group = "Under 18",
              stroke = TRUE, 
              weight = 0.5,
              opacity = 1,
              color = "black", 
              fillColor = ~ pal_age(percent_under18),
              fillOpacity = 0.5,
              popup = paste0("Percent of Population Under 18: ", 
                             round(gv_sf_summary$percent_under18, digits = 2), "%", "<br>",
                             "Number of People Under 18: ", gv_sf_summary$total_under18, "<br>",
                             "Total Population: ", gv_sf_summary$pop_est, "<br>",
                             "Tract: ", gv_sf_summary$tract_name, ", ", gv_sf_summary$locality),
              highlightOptions = highlightOptions(
                fillOpacity = 1,
                bringToFront = FALSE
              )) %>%
  addPolygons(group = "Under 25",
              stroke = TRUE, 
              weight = 0.5,
              opacity = 1,
              color = "black", 
              fillColor = ~ pal_age(percent_under25),
              fillOpacity = 0.5,
              popup = paste0("Percent of Population Under 25: ", 
                             round(gv_sf_summary$percent_under25, digits = 2),  "%", "<br>",
                             "Number of People Under 25: ", gv_sf_summary$total_under25, "<br>",
                             "Total Population: ", gv_sf_summary$pop_est, "<br>", 
                             "Tract: ", gv_sf_summary$tract_name, ", ", gv_sf_summary$locality),
              highlightOptions = highlightOptions(
                fillOpacity = 1,
                bringToFront = FALSE
              )) %>%
  addLegend("bottomright",
            pal = pal_age,
            values = ~ percent_under25, 
            title = paste("Percentage of the Population"), 
            labFormat = labelFormat(suffix = "%"),
            opacity = 1) %>%
  addLayersControl(baseGroups = c("Under 18","Under 25"),
                   options = layersControlOptions(collapsed = FALSE)) %>%
  addMarkers(data = gv, 
             lng = gv$lon,
             lat = gv$lat,
             popup = paste0("Description: ", gv$description, "<br>",
                            "Date: ", gv$reported_date, "<br>",
                            "Status: ", gv$verified),
             clusterOptions = markerClusterOptions(
               showCoverageOnHover = FALSE,
               iconCreateFunction=JS("function (cluster) {    
    var childCount = cluster.getChildCount();  
    if (childCount < 100) {  
      c = 'rgba(211,211,211);'
    } else if (childCount < 1000) {  
      c = 'rgba(211,211,211);'  
    } else { 
      c = 'rgb(211,211,211);'  
    }    
    return new L.DivIcon({ html: '<div style=\"background-color:'+c+'\"><span>' + childCount + '</span></div>', className: 'marker-cluster', iconSize: new L.Point(40, 40) });

  }")
             ))

Scatterplot

scatter_text <- gv_sf_summary %>%
  filter(percent_incidents > 4)

gv_sf_summary %>%
  filter(tract_name != "JPA - Fontaine") %>%
  ggplot(aes(x = percent_under18, y = percent_incidents, size = pop_est, color = locality))  +
  geom_point(alpha = 0.8) +
  scale_size(range = c(.1, 12)) +
  geom_label(data = scatter_text, 
            aes(x = percent_under18, y = percent_incidents, label = tract_name), 
            size = 3, hjust = 1,
            inherit.aes = FALSE) +
  scale_color_manual(values = c("#007BAB", "#F8BE3D"), 
                    name = "Region") +
  scale_y_continuous(labels = function(x) paste0(x, "%")) +
  scale_x_continuous(labels = function(x) paste0(round(x), "%")) +
  labs(x = "Percentage of the Population Under 18 Years Old",
       y = "Percentage of Total Gun Violence Incidents",
       title = "Under 18 Population Percentages Compared to Incidents of Gun Violence",
       subtitle = "Each circle represents a different census tract",
       caption = "Years: 2018 - 2024",
       size = "Estimated Population") +
  guides(size = "none")

Notable Trends

According to the scatterplot above, there is not a strong relationship between the percentage of youth living in a region and the occurrence of gun violence. The regions with the highest proportion of gun violence are Fifeville - Cherry Avenue, 10th & Page - Venable, Ridge Street, Downtown, and Belmont. These tracts are all near the median value of youth proportions, which is approximately 20%.

Data Notes

ACS 5 Year Summaries

The American Community Survey (ACS) 5-Year Estimates are summaries for geographic areas that are based on data collected over a five-year period. The ACS data represented here is from 2018-2022. The 5-year estimates are considered more accurate than the 1-year estimates because they use a larger sample size, which results in smaller margins of error.

JPA/Fontaine

The ACS indicates that there are only 14 individuals under the age of 18, all of which are female, living in the JPA - Fontaine census tract. We attribute these low numbers to a data recording error, and subsequently have removed JPA - Fontaine from the below calculations to avoid skewing the results inaccurately.


Childhood Poverty

Are incidents of gun violence happening where there is more poverty?

The Census Bureau uses a set of income thresholds that vary by family size and composition to determine who is below poverty. If a family’s total income is less than the threshold for that family’s composition, then every individual in that family is considered to be living below poverty.

Map

Map Instructions: the map below shows the rates of children and adults living in poverty in our region. Each grey circle represents a cluster of gun violence incidents. Click on a circle to zoom into the cluster and explore the location, date, and description of each incident. Click on a census tract to see population measurements. Zoom in to see specific areas and incidents more closely. Toggle between the Overall Poverty Rates and Child Poverty Rates using the selector in the top right.

pal_pov <- colorNumeric(palette = "viridis",
                        domain = NULL,
                        reverse = TRUE)

gv_sf_summary %>%
  leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>% 
  addPolygons(group = "Overall Poverty",
              stroke = TRUE, 
              weight = 0.5,
              opacity = 1,
              color = "black", 
              fillColor = ~ pal_pov(poverty_est),
              fillOpacity = 0.5,
              popup = paste0("Poverty Rate: ", gv_sf_summary$poverty_est, "%", "<br>",
                             "Childhood Poverty Rate: ", gv_sf_summary$cpov_est, "%", "<br>",
                             "Population: ", gv_sf_summary$pop_est, "<br>",
                             "Tract: ", gv_sf_summary$tract_name, ", ", gv_sf_summary$locality),
              highlightOptions = highlightOptions(
                fillOpacity = 1,
                bringToFront = FALSE
              )) %>%
  addPolygons(group = "Child Poverty",
              stroke = TRUE, 
              weight = 0.5,
              opacity = 1,
              color = "black", 
              fillColor = ~ pal_pov(cpov_est),
              fillOpacity = 0.5,
              popup = paste0("Poverty Rate: ", gv_sf_summary$poverty_est, "%", "<br>",
                             "Child Poverty Rate: ", gv_sf_summary$cpov_est, "%", "<br>",
                             "Population: ", gv_sf_summary$pop_est, "<br>",
                             "Tract: ", gv_sf_summary$tract_name, ", ", gv_sf_summary$locality),
              highlightOptions = highlightOptions(
                fillOpacity = 1,
                bringToFront = FALSE
              )) %>%
  addLegend("bottomright",
            pal = pal_pov,
            values = ~ poverty_est, 
            title = "Estimated Poverty Rates",
            labFormat = labelFormat(suffix = "%"), 
            opacity = 1) %>%
  addLayersControl(baseGroups = c("Overall Poverty", "Child Poverty"),
                   options = layersControlOptions(collapsed = FALSE)) %>%
  addMarkers(data = gv,
             lng = gv$lon,
             lat = gv$lat,
             popup = paste0("Description: ", gv$description, "<br>",
                            "Date: ", gv$reported_date, "<br>",
                            "Status: ", gv$verified),
             clusterOptions = markerClusterOptions(
               showCoverageOnHover = FALSE,
               iconCreateFunction=JS("function (cluster) {    
    var childCount = cluster.getChildCount();  
    if (childCount < 100) {  
      c = 'rgba(211,211,211);'
    } else if (childCount < 1000) {  
      c = 'rgba(211,211,211);'  
    } else { 
      c = 'rgb(211,211,211);'  
    }    
    return new L.DivIcon({ html: '<div style=\"background-color:'+c+'\"><span>' + childCount + '</span></div>', className: 'marker-cluster', iconSize: new L.Point(40, 40) });

  }")
             ))

Scatterplot

scatter_text2 <- gv_sf_summary %>%
  filter(cpov_est > 31)

gv_sf_summary %>%
  filter(tract_name != "JPA - Fontaine") %>%
  ggplot(aes(x = cpov_est, y = percent_incidents, size = pop_est, color = locality)) +
  geom_point(alpha = 0.8) +
  scale_size(range = c(.1, 12)) +
  geom_label_repel(data = scatter_text2, 
                   aes(x = cpov_est, y = percent_incidents, label = tract_name), size = 3, 
                   min.segment.length = unit(0, 'lines'),
                   inherit.aes = FALSE) +
  scale_color_manual(values = c("#007BAB", "#F8BE3D"), 
                   name = "Region") +
  scale_y_continuous(labels = function(x) paste0(x, "%")) +
  scale_x_continuous(labels = function(x) paste0(round(x), "%")) +
  labs(x = "Percentage of Children Under 18 Living in Poverty",
       y = "Percentage of Total Gun Violence Incidents",
       title = "Childhood Poverty Rates Compared to Incidents of Gun Violence",
       subtitle = "Each circle represents a different census tract",
       caption = "Years: 2018 - 2024",
       size = "Estimated Population") +
  guides(size = "none")

Notable Trends

According to the scatterplot above, there is a positive relationship between the percentage of youth living in poverty and the occurrence of gun violence. The census tracts with the highest percentages of youth living in poverty are 10th & Page - Venable, Fifeville - Cherry Avenue, Oak Hill - Southwood, and Ridge Street. Of those four tracts, Oak Hill - Southwood is the only region where the proportion of gun violence is below 7.5%.

Data Notes

ACS 5 Year Summaries

The American Community Survey (ACS) 5-Year Estimates are summaries for geographic areas that are based on data collected over a five-year period. The ACS data represented here are from 2018-2022. The 5-year estimates are considered more accurate than the 1-year estimates because they use a larger sample size, which results in smaller margins of error.

Because the data represents summaries from 2018-2022, the plots below do not show changes in poverty rates by individual year but are rather an average of the past 5 years. This information can still be used to estimate approximate poverty rates for 2023 and 2024, which haven’t been released in the ACS 5-Year Estimates yet.

Student Housing

A significant portion of the JPA-Fontaine Census tract is made up of UVA students. Many of these students are not earning an income and therefore skew overall poverty levels for that area.


Median Earnings by Education

Unemployment Rates

Next Steps

This work has focused on understanding the larger picture of gun violence in our community – the nature, scope, frequency, and targets – by pulling data from multiple sources, each of which tells only a partial story. As this work continues, we will work with community partners to identify additional data that can help us better understand the underlying causes and larger impacts and to strategize on and evaluate solutions. This might include information on community factors such as regional history, adverse childhood experiences, access to resources, and other social structures that are in play.


Appendix

Terminology

Firearm Injury

The CDC defines a firearm injury as:

“A gunshot wound or penetrating injury from a weapon that uses a powder charge to fire a projectile. Weapons that use a powder charge include handguns, rifles, and shotguns. Injuries from air- and gas-powered guns, BB guns, and pellet guns are not considered firearm injuries as these types of guns do not use a powder charge to fire a projectile.”

Types of firearm injuries include:

  • Intentionally self-inflicted
  • Unintentional (accidental injuries that happen while someone is cleaning or playing with a firearm)
  • Interpersonal violence (homicide or assault)
  • Legal intervention (violence inflicted by law enforcement on duty)
  • Undetermined intent (not enough information to determine)

Gun Violence

Gun violence is an offense committed with firearms, such as handguns, shotguns, or semi-automatic rifles. It can include homicide, violent crime, attempted suicide, suicide, and unintentional death and injury. The national Gun Violence Archive describes gun violence as:

“all incidents of death or injury or threat with firearms… a shooting of a victim by a subject/suspect is considered gun violence as is a defensive use or an officer involved shooting. The act itself, no matter the reason is violent in nature.”

Gun Violence Trauma

The American Sociological Association describes gun violence trauma as the psychological and emotional impact that gun violence can have on individuals and communities. It can result from direct or indirect exposure to gun violence and has long-term negative effects on wellbeing. This information is difficult to objectively measure, so while this analysis focuses on numbers of direct exposure to gun violence for individuals it is important to remember the lasting indirect trauma gun violence has on our community.

Incident

An incident of gun violence can be defined as a time-boxed event where individual acts of violence took place. An incident may include multiple offenses and individuals involved. For example, if an individual went on a shooting spree and injured three people, that would be considered as one incident with three offenses.

Crime

The FBI defines gun-related crimes as the number of illegal offenses using a firearm committed during an incident of gun violence. Gun violence is not synonymous with gun crimes. Not all crimes are violent in nature. For example, a person may be charged with the crime of illegally possessing a firearm, despite not brandishing or using the weapon.

Arrest

An arrest can be defined as the physical taking or seizing of a person by a police officer. It is an act that indicates the intention to take that person into custody. An arrest can happen after an incident of gun violence, or it can happen for nonviolent issues such as parole violations or a failure to appear for trial. Anyone arrested is considered innocent until proven guilty in a court of law.

Participant

A participant is defined as an individual involved in an act of gun violence. Participants can be victims, those injured or killed by firearms, or offenders, those using firearms. In cases of suicide, participants are considered victims. It is important to note that while the definition is limited to individuals that are physically affected by gun violence, the spectrum of victimization often extends much further to the community.

Youth

For this analysis, youth are considered to be juveniles under the age of 18. Some visualizations include individuals up to 24 years old as noted in the description.

References


  1. Everytown - Beyond Measure: Gun Violence Trauma - https://everytownresearch.org/report/gun-violence-trauma/.Published May 17, 2023.↩︎

  2. Grinshteyn, E., & Hemenway, D. “Violent death rates in the US compared to those of the other high‑income countries, 2015.” Preventive Medicine 123 (2019), 20‑26. https://doi.org/10.1016/j.ypmed.2019.02.026↩︎

  3. US Surgeon General’s Office - The U.S. Surgeon General’s Advisory on Firearm Violence: A Public Health Crisis in America - https://www.hhs.gov/sites/default/files/firearm-violence-advisory.pdf. Published July 2, 2024.↩︎

  4. UVA President’s Council - Community Safety Working Group Report - https://prescouncil.president.virginia.edu/sites/g/files/jsddwu616/files/2024-01/Final%20Community%20Safety%20Working%20Group%20Report_24.pdf. Published September 22, 2023.↩︎

  5. Cville Weekly - CPD Chief says crime rates lower overall despite recent spike in gun violence - https://www.c-ville.com/cpd-chief-says-crime-rates-lower-overall-despite-recent-spike-in-gun-violence - Published July 3, 2024.↩︎

  6. Melnick, Glenn et al. “COVID-19 driven decline in emergency visits: Has it continued, is it permanent, and what does it mean for emergency physicians?.” The American journal of emergency medicine vol. 61 (2022): 64-67. doi:10.1016/j.ajem.2022.08.031↩︎

  7. Centers for Disease Control - About Firearm Injury and Death: Fast Facts - https://www.cdc.gov/firearm-violence/about/?CDC_AAref_Val=https://www.cdc.gov/violenceprevention/firearms/fastfact.html. Accessed March 15, 2024.↩︎

  8. Centers For Disease Control - Provisional Suicide Deaths in the United States, 2022 - https://www.cdc.gov/media/releases/2023/s0810-US-Suicide-Deaths-2022.html. Published August 10, 2023.↩︎

  9. Centers For Disease Control - Provisional Suicide Deaths in the United States, 2022 - https://www.cdc.gov/media/releases/2023/s0810-US-Suicide-Deaths-2022.html. Published August 10, 2023.↩︎

  10. PEW Research - Key facts about Americans and guns - https://www.pewresearch.org/short-reads/2023/09/13/key-facts-about-americans-and-guns/ - Published September 13, 2023.↩︎

  11. Virginia State Police - Firearms/Concealed Weapons FAQ - https://vsp.virginia.gov/services/firearms/faq - Accessed April 30, 2024.↩︎

  12. UVA Policy - SEC-030: Regulation of Weapons, Fireworks, Explosives, and Other Prohibited Items - https://uvapolicy.virginia.edu/policy/sec-030 - Published 2022.↩︎

  13. Jay Szkola, Megan J. O’Toole, and Sarah Burd-Sharps - Gun Thefts from Cars: The Largest Source of Stolen Guns - https://everytownresearch.org/report/gun-thefts-from-cars-the-largest-source-of-stolen-guns-2/ - Published May 9, 2024.↩︎

  14. UVA Statistics, Fall 2022 Enrollment - https://admission.virginia.edu/admission/statistics) - Accessed May 19, 2024.↩︎